package space.misiro.ledgers.keycloak.client.config

import org.keycloak.admin.client.Keycloak
import org.keycloak.admin.client.KeycloakBuilder
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

/**
 * Keycloak管理客户端配置类，用于创建与Keycloak服务器交互的管理客户端实例
 */
@Configuration
class KeycloakConfig {

    /**
     * 创建并配置Keycloak Admin客户端实例
     *
     * @param config Keycloak客户端配置参数，包含以下关键属性：
     *   - authServerUrl: Keycloak认证服务器的URL地址
     *   - masterRealm: 管理操作使用的Master领域名称
     *   - username: 管理员账号用户名
     *   - password: 管理员账号密码
     * @return 配置完成的Keycloak Admin客户端实例，可用于执行领域管理操作
     */
    @Bean
    fun getKeycloakAdminClient(config: KeycloakClientConfig): Keycloak = KeycloakBuilder.builder()
        .serverUrl(config.authServerUrl)
        .realm(config.masterRealm)
        .clientId("admin-cli")
        .username(config.username)
        .password(config.password)
        .build()
}